2.4.- Escriu les teues funcions
1. Funció sense paràmetres i que no retorna valors
Les funcions que no necessiten paràmetres d'entrada i que no retornen valors númerics es declaren amb void nomfunció ()
, mira l'exemple següent:
// Programa Semafor Definim un funció sense paràmetres d'entrada i que no retorna valors numèrics int ledRoig =8 ; //posem el led roig al pin 8 int ledVerd=7; // posem el led roig al pin 7 void setup() { pinMode(ledRoig, OUTPUT);// el ledRoig és una eixida digital pinMode(ledVerd, OUTPUT);// el ledVerd és una eixida digital } void loop() { semafor(); //cridem la funció semafor dins d'un bucle infinit } //Anem a definir la funció semafor void semafor() { digitalWrite(ledVerd,HIGH);//engeguem el lerd verd delay(2000); //aturem el programa 2 segons digitalWrite(ledVerd, LOW); //aturem el led verd delay(1000); //aturem el programa 1 segon digitalWrite(ledRoig,HIGH);//engeguem el lerd roig delay(2000); //aturem el programa 2 segons digitalWrite(ledRoig, LOW); //aturem el led roig delay(1000); //aturem el programa 1 segon }
|
Podem utilitzar aquest tipus de funció per definir un funció engegaMotorA () , aturaMotorA (), engegaMotorB () , o aturaMotorB () i simplificar l'ús del integrat L293D (driver motor) que veurem una mica després.
2. Funcion amb paràmetres i que no retorna valors
Podem definir una funció a la qual li calga una paràmetre d'entrada per mantindre el temps que vulguem engegat un dispositiu. La declararem amb void nomFunció ( tipusParametre paràmetre) , mira l'exemple a continuació:
// Programa Semafor2 Definim un funció amb un paràmetre d'entrada i que no retorna valors numèrics int ledRoig =8 ; //posem el led roig al pin 8 int ledVerd=7; // posem el led roig al pin 7 int temps ; //declarem el temps com variable int void setup() { pinMode(ledRoig, OUTPUT);// el ledRoig és una eixida digital pinMode(ledVerd, OUTPUT);// el ledVerd és una eixida digital } void loop() { temps=4000; //definim 4 segons com el temps a engegar els leds semafor(temps); //cridem la funció semàfor dins d'un bucle infinit } //Anem a definir la funcio semafor2 void semafor(int temps) { digitalWrite(ledVerd,HIGH);//engeguem el lerd verd delay(temps); //aturem el programa "temps" segons digitalWrite(ledVerd, LOW); //aturem el led verd delay(1000); //aturem el programa 1 segon digitalWrite(ledRoig,HIGH);//engeguem el lerd roig delay(temps); //aturem el programa "temps" segons digitalWrite(ledRoig, LOW); //aturem el led roig delay(1000); //aturem el programa 1 segon } |
Podríem escriure així funcions per engegar el motor A "n" mili-segons del tipus engegaMotorA(int n) o per engegar el motor amb una velocitat polsada amb PWR de forma que no se'n isca de la ratlla el cotxe i amb una variable global int pwr pugam definir la velocitat del cotxe amb les funcions MotorAavantPWR (int pwr) , MotorBavantPWR (int pwr) , MotorAenreraPWR (int pwr) , MotorBenreraPWR (int pwr) .
3. Funció que retorna un valor numèric
També podem definir una funció amb paràmetres i que retorne un valor numèric però aquesta vegada no utilitzarem void en la funció, sinò el tipus numèric d'eixida que tindrà com int funció (int paràmetre1, int paràmetre 2) . Mira l'exemple tret de la pàgina d'Arduino.
// Programa funcioMultiplicació Definim un funció amb paràmetres d'entrada i que retorna valors numèrics void setup(){ Serial.begin(9600); //declare el serial monitor } void loop() { int i = 2; //definisc i com enter int j = 3; //definisc j com enter int k; //definisc k com enter k = funcioMultiplicacio(i, j); // k conté el resultat 6 Serial.println(k); //imprimeix el resultat delay(500); //atura el programa 0,5 segons } //declare la funció multiplicació int funcioMultiplicacio(int x, int y){ int resultat; resultat = x * y; return resultat; }
|
Llicenciat sota la Llicència Creative Commons Reconeixement NoComercial CompartirIgual 3.0